#include "StdAfx.h"
#include "Sprawa.h"
#include "Osoba.h"


Sprawa::Sprawa(void)
{
	m_numer_rsow="RSoW";
	m_ID="ID";
	m_liczba_dziennika="Liczba_Dziennika";
	m_artykul="ART";
	m_data_zdarzenia="DD.MM.RRRR";
	m_data_zgloszenia="DD.MM.RRRR";
	m_data_rejestracji="DD.MM.RRRR";
	m_data_zakonczenia="DD.MM.RRRR";
	m_status="W_Toku";
}


Sprawa::~Sprawa(void)
{
}
CString Sprawa::GetNumerRsow()
{
	return m_numer_rsow;
}
CString Sprawa::GetNumerID()
{
	return m_ID;
}
CString Sprawa::GetNumerLiczbaDziennika()
{
	return m_liczba_dziennika;
}
CString Sprawa::GetDataZdarzenia()
{
	return m_data_zdarzenia;
}
CString Sprawa::GetDataZgloszenia()
{
	return m_data_zgloszenia;
}
CString Sprawa::GetDataZakonczenia()
{
	return m_data_zakonczenia;
}
CString Sprawa::GetDataRejestracji()
{
	return m_data_rejestracji;
}
CString Sprawa::GetStatus()
{
	return m_status;
}
CString Sprawa::GetArtykul()
{
	return m_artykul;
}
CString Sprawa::GetTrybSkierowania()
{
	return m_tryb_skierowania;
}
CString Sprawa::GetKonkluzja()
{
	return m_konkluzja;
}
CString Sprawa::GetOpisSprawy()
{
	return m_opis_sprawy;
}
void Sprawa::SetNumerRsow(CString _numer_rsow)
{
	m_numer_rsow=_numer_rsow;
}
void  Sprawa::SetNumerID(CString _ID)
{
	m_ID=_ID;
}
void  Sprawa::SetNumerLiczbaDziennika(CString _liczba_dziennika)
{
	m_liczba_dziennika=_liczba_dziennika;
}
void Sprawa::SetDataZdarzenia(CString _data_zdarzenia)
{
	m_data_zdarzenia=_data_zdarzenia;
}
void Sprawa::SetDataZgloszenia(CString _data_zgloszenia)
{
	m_data_zgloszenia=_data_zgloszenia;
}
void Sprawa::SetDataZakonczenia(CString _data_zakonczenia)
{
	m_data_zakonczenia=_data_zakonczenia;
}
void Sprawa::SetDataRejestracji(CString _data_rejestracji)
{
	m_data_rejestracji=_data_rejestracji;
}
void Sprawa::SetStatus(CString _status)
{
	m_status=_status;
}
void Sprawa::SetArtykul(CString _artykul)
{
	m_artykul=_artykul;
}
void Sprawa::SetTrybSkierowania(CString _tryb_skierowania)
{
	m_tryb_skierowania=_tryb_skierowania;
}
void Sprawa::SetKonkluzja(CString _konkuluzja)
{
	m_konkluzja=_konkuluzja;
}
void Sprawa::SetOpisSprawy(CString _opis_sprawy)
{
	m_opis_sprawy=_opis_sprawy;
}
Adres &Sprawa::GetPointerToAdress()
{
	return m_miejsce_zdarzenia;
}
Osoba &Sprawa::AddOsoba()
{
	m_uczestnicy.resize(m_uczestnicy.size()+1);
	CString temp;
	temp.Format("Pesel%d",m_uczestnicy.size());
	m_uczestnicy.back().SetPesel(temp);
	return m_uczestnicy.back();
}
void Sprawa::DeleteOsoba(CString _pesel)
{
	for(int i=0;i<m_uczestnicy.size();i++)
	{
		if(m_uczestnicy[i].GetPesel()==_pesel)
			m_uczestnicy.erase(m_uczestnicy.begin()+i);
	}
}
Osoba &Sprawa::FindOsoba(CString _szuakny)
{
	for(int i=0;i<m_uczestnicy.size();i++)
	{
		if(m_uczestnicy[i].GetPesel()==_szuakny)
			return m_uczestnicy[i];
	}
}
void Sprawa::ReadFromFile()
{
	CStdioFile file;
	CString line, path;
	path="data\\";
	path+=m_numer_rsow;
	path+="\\osoby.txt";
	if(file.Open(path, CFile::modeRead|CFile::shareExclusive ))
	{
	while (file.ReadString(line))
	{
		CString temp;
		std::deque<CString> buf;
		for(int i=0;i<line.GetLength();i++)
		{
			if(line[i]==' '||line[i]=='\n')
			{
				buf.push_back(temp);
				temp.Empty();
			}
			else
				temp+=line[i];
		}
		Osoba temp2;
		temp2.SetImie(buf[0]);
		temp2.SetNazwisko(buf[1]);
		temp2.SetNazwiskoRodowe(buf[2]);
		temp2.SetImieMatki(buf[3]);
		temp2.SetImieOjca(buf[4]);
		temp2.SetPesel(buf[5]);
		temp2.SetSeriaDowodu(buf[6]);
		temp2.SetNumerDowodu(buf[7]);
		temp2.SetDowodWydany(buf[8]);
		temp2.SetMiejsceUrodzenia(buf[9]);
		temp2.SetDochody(buf[10]);
		temp2.SetLiczbaOsobUtrzymanie(buf[11]);
		temp2.SetStanMajatku(buf[12]);
		temp2.SetStanCywilny(buf[13]);
		temp2.SetStanZdrowia(buf[14]);
		temp2.SetZatrudnienie(buf[15]);
		temp2.SetStatus(buf[16]);
		temp2.SetAktualnaCzynnosc(buf[17]);
		m_uczestnicy.push_back(temp2);
		buf.clear();
	}
	file.Close();	
	}
}
void Sprawa::SaveToFile()
{
	CStdioFile file;
	CString line, path;
	path="data\\";
	path+=m_numer_rsow;
	path+="\\osoby.txt";
	if(file.Open(path, CFile::modeCreate|CFile::modeWrite|CFile::modeNoInherit))
	{
		while(m_uczestnicy.size()!=0)
		{
			CString temp;
			temp+=m_uczestnicy.back().GetImie();
			temp+=" ";
			temp+=m_uczestnicy.back().GetNazwisko();
			temp+=" ";
			temp+=m_uczestnicy.back().GetImieMatki();
			temp+=" ";
			temp+=m_uczestnicy.back().GetImieOjca();
			temp+=" ";
			temp+=m_uczestnicy.back().GetNazwiskoRodowe();
			temp+=" ";
			temp+=m_uczestnicy.back().GetPesel();
			temp+=" ";
			temp+=m_uczestnicy.back().GetSeriaDowodu();
			temp+=" ";
			temp+=m_uczestnicy.back().GetNumerDowodu();
			temp+=" ";
			temp+=m_uczestnicy.back().GetDowodWydany();
			temp+=" ";
			temp+=m_uczestnicy.back().GetMiejsceUrodzenia();
			temp+=" ";
			temp+=m_uczestnicy.back().GetDochody();
			temp+=" ";
			temp+=m_uczestnicy.back().GetLiczbaOsobUtrzymanie();
			temp+=" ";
			temp+=m_uczestnicy.back().GetStanMajatku();
			temp+=" ";
			temp+=m_uczestnicy.back().GetStanCywilny();
			temp+=" ";
			temp+=m_uczestnicy.back().GetStanZdrowia();
			temp+=" ";
			temp+=m_uczestnicy.back().GetZatrudnienie();
			temp+=" ";
			temp+=m_uczestnicy.back().GetStatus();
			temp+=" ";
			temp+=m_uczestnicy.back().GetAktualnaCzynnosc();
			temp+=" \n";
			file.WriteString(temp);
			m_uczestnicy.pop_back();
		}
		file.Close();
	}
}
Osoba & Sprawa::operator[](int _numer)
{
	return m_uczestnicy[_numer];
}
int Sprawa::GetSize(void)
{
	return m_uczestnicy.size();
}
std::deque<Osoba> &Sprawa::GetSprawcy()
{
	std::deque<Osoba> temp;
	for(int i=0;i<m_uczestnicy.size();i++)
	{
		if(m_uczestnicy[i].GetStatus()=="Sprawca")
			temp.push_back(m_uczestnicy[i]);
	}
	return temp;
}
std::deque<Osoba> &Sprawa::GetPoszkodowany()
{
	std::deque<Osoba> temp;
	for(int i=0;i<m_uczestnicy.size();i++)
	{
		if(m_uczestnicy[i].GetStatus()=="Poszkodowany")
			temp.push_back(m_uczestnicy[i]);
	}
	return temp;
}
std::deque<Osoba> &Sprawa::GetSwiadkowie()
{
	std::deque<Osoba> temp;
	for(int i=0;i<m_uczestnicy.size();i++)
	{
		if(m_uczestnicy[i].GetStatus()=="Swiadek")
			temp.push_back(m_uczestnicy[i]);
	}
	return temp;
}